package ru.susu.algebra.io;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;

import org.apache.commons.io.FileUtils;

/**
 * Набор методов для работы с файлами
 *
 * @author akargapolov
 * @since: 03.05.2010
 */
public class FileUtilities
{

	/**
	 * Получение содержимого файла в виде строки
	 * @param fileName имя файла
	 * @return содержимое файла
	 * @throws FileNotFoundException
	 */
	public static String getFileAsString(String fileName) throws FileNotFoundException
	{
		File file = new File(fileName);
		Scanner scanner = new Scanner(file);
		StringBuffer buffer = new StringBuffer();
		try
		{
			while (scanner.hasNextLine())
			{
				buffer.append(scanner.nextLine()).append("\n");
			}
		}
		finally
		{
			scanner.close();
		}
		return buffer.toString();
	}

	/**
	 * Создает директорию с заданным именем, если она не существует
	 * @param name имя директории
	 * @return true, если директория была создана
	 */
	public static boolean makeDirectory(String name)
	{
		File file = new File(name);
		if (!file.exists())
		{
			return file.mkdir();
		}
		return false;
	}

	public static PrintStream createBufferedFilePrintStream(String fileName)
	{
		try
		{
			FileOutputStream stream = FileUtils.openOutputStream(new File(fileName));
			BufferedOutputStream buffered = new BufferedOutputStream(stream);
			return new PrintStream(buffered);
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
	}

}
